﻿cmake_minimum_required( VERSION 2.6)

project(Tutorial CXX)

# should we use our own math functions?
option(USE_MYMATH "User tutorial provided math implementation" ON)

# The version number.
set(Tutorial_VERSION_MAJOR 1)
set(Tutorial_VERSION_MINOR 0)

# does this system provide the log and exp functions?
include(${CMAKE_ROOT}/Modules/CheckFunctionExists.cmake)
check_function_exists (log HAVE_LOG)
check_function_exists (exp HAVE_EXP)


# configure a header file to pass some of the CMake settings
# to the source code

configure_file(
"${PROJECT_SOURCE_DIR}/TutorialConfig.h.in"
"${PROJECT_BINARY_DIR}/TutorialConfig.h"
)

# add the binary tree to the search path for include files
# so that we will find TutorialConfig.h

include_directories("${PROJECT_BINARY_DIR}")

message("2MathFunctions: ${MathFunctions_SOURCE_DIR}")

# add the MathFunctions library?

if(USE_MYMATH)
  include_directories("${PROJECT_SOURCE_DIR}/MathFunctions")
  add_subdirectory(MathFunctions)
  set(EXTRA_LIBS ${EXTRA_LIBS} MathFunctions)
endif(USE_MYMATH)


add_executable(Tutorial Tutorial.cxx)
target_link_libraries(Tutorial MathFunctions)

# add the install targets
install (TARGETS Tutorial DESTINATION bin)
install (FILES "${PROJECT_BINARY_DIR}/TutorialConfig.h" DESTINATION include)


enable_testing()

# does the application run
add_test (TutorialRuns Tutorial 25)

#does it sqrt of 25
add_test (TutorialComp25 Tutorial 25)

set_tests_properties(TutorialComp25 PROPERTIES PASS_REGULAR_EXPRESSION "25 are 5")


# build a CPack driven installer package
include(InstallRequiredSystemLibraries)
set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/License.txt")
set(CPACK_PACKAGE_VERSION_MAJOR "${Tutorial_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MAJOR "${Tutorial_VERSION_MINOR}")


#set(CPACK_SOURCE_GENERATOR "ZIP")


#set(CPACK_SOURCE_PACKAGE_FILE_NAME sweather-${PROJECT_VERSION_FULL})

include(CPack)